package com.wskj.workbench.service;


import com.wskj.common.core.mybatisplus.core.IServicePlus;
import com.wskj.common.core.page.TableDataInfo;
import com.wskj.common.utils.tool.Query;
import com.wskj.workbench.bo.app.AppRankQueryBo;
import com.wskj.workbench.bo.app.AppTbUserWalletDetailQueryBo;
import com.wskj.workbench.bo.app.AppTbUserWithdrawalAddBo;
import com.wskj.workbench.bo.app.AppTbUserWithdrawalQueryBo;
import com.wskj.workbench.bo.web.TbUserWithdrawalAddBo;
import com.wskj.workbench.bo.web.TbUserWithdrawalEditBo;
import com.wskj.workbench.bo.web.TbUserWithdrawalQueryBo;
import com.wskj.workbench.domain.TbUserWithdrawal;
import com.wskj.workbench.vo.app.AppRankVo;
import com.wskj.workbench.vo.app.AppTbUserWalletDetailVo;
import com.wskj.workbench.vo.app.AppTbUserWithdrawalVo;
import com.wskj.workbench.vo.web.TbUserWithdrawalVo;

import java.util.Collection;
import java.util.List;

/**
 * 用户提现记录Service接口
 *
 * @author wskj
 * @date 2024-09-26
 */
public interface ITbUserWithdrawalService extends IServicePlus<TbUserWithdrawal> {
    /**
     * 查询单个
     *
     * @return
     */
    TbUserWithdrawalVo queryById(Long id);

    /**
     * 查询列表
     */
    TableDataInfo<TbUserWithdrawalVo> queryPageList(TbUserWithdrawalQueryBo bo);

    /**
     * 查询列表
     */
    List<TbUserWithdrawalVo> queryList(TbUserWithdrawalQueryBo bo);

    /**
     * 根据新增业务对象插入用户提现记录
     *
     * @param bo 用户提现记录新增业务对象
     * @return
     */
    Boolean insertByAddBo(TbUserWithdrawalAddBo bo);

    /**
     * 根据编辑业务对象修改用户提现记录
     *
     * @param bo 用户提现记录编辑业务对象
     * @return
     */
    Boolean updateByEditBo(TbUserWithdrawalEditBo bo);

    /**
     * 校验并删除数据
     *
     * @param ids     主键集合
     * @param isValid 是否校验,true-删除前校验,false-不校验
     * @return
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 导入数据
     *
     * @param tbUserWithdrawalList 排污口水质数据
     * @return String
     */
    String importTbUserWithdrawal(List<TbUserWithdrawalVo> tbUserWithdrawalList);

    Boolean audit(TbUserWithdrawalEditBo bo);

    Boolean applyWithdrawal(AppTbUserWithdrawalAddBo bo);

    TableDataInfo<AppTbUserWithdrawalVo> withdrawalRecord(Query query, AppTbUserWithdrawalQueryBo bo);


    Boolean daozhang(TbUserWithdrawalEditBo bo);
}
